package com.ruoyi.collect.service;

import com.ruoyi.movie.domain.MovieBasics;
import java.util.List;

/**
 * 数据字典服务接口
 * 用于自动维护采集过程中的基础数据（国家、演员、语言等）
 *
 * @author ruoyi
 * @date 2025-11-13
 */
public interface IDataDictionaryService {

    /**
     * 从影视信息中提取并保存基础数据字典
     *
     * @param movie 影视基础信息
     */
    void extractAndSaveDictionaries(MovieBasics movie);

    /**
     * 保存国家信息（去重）
     *
     * @param areaText 地区文本，逗号分隔
     */
    void saveCountries(String areaText);

    /**
     * 保存演员信息（去重）
     *
     * @param actorText 演员文本，逗号分隔
     */
    void saveActors(String actorText);

    /**
     * 保存导演信息（去重）
     *
     * @param directorText 导演文本，逗号分隔
     */
    void saveDirectors(String directorText);

    /**
     * 保存编剧信息（去重）
     *
     * @param writerText 编剧文本，逗号分隔
     */
    void saveWriters(String writerText);

    /**
     * 保存语言信息（去重）
     *
     * @param languageText 语言文本，逗号分隔
     */
    void saveLanguages(String languageText);

    // ========== 批量保存方法（性能优化） ==========

    /**
     * 批量保存国家（使用INSERT IGNORE）
     *
     * @param countries 国家名称列表
     */
    void batchSaveCountries(List<String> countries);

    /**
     * 批量保存演员（使用INSERT IGNORE）
     *
     * @param actors 演员名称列表
     */
    void batchSaveActors(List<String> actors);

    /**
     * 批量保存导演（使用INSERT IGNORE）
     *
     * @param directors 导演名称列表
     */
    void batchSaveDirectors(List<String> directors);

    /**
     * 批量保存编剧（使用INSERT IGNORE）
     *
     * @param writers 编剧名称列表
     */
    void batchSaveWriters(List<String> writers);

    /**
     * 批量保存语言（使用INSERT IGNORE）
     *
     * @param languages 语言名称列表
     */
    void batchSaveLanguages(List<String> languages);
}
